/*
  字符串游戏
  题目描述
    三个小朋友在玩字母游戏：
      首先，三个小朋友各自写下 n 个长度恰好为 3 的单词；
      然后，按照如下方式为三个小朋友写下的每个单词计算他们的得分：
        - 如果一个小朋友写的某个单词只有他自己写了，那这个人就加 3 分。
        - 如果两个小朋友写了相同的某个单词，那这两个人各得 1 分。
        - 如果三个小朋友不约而同都写了某个单词，那这个单词不会为任何人记分。
    聪明的你能不能帮他们算一算三个人的最终得分呢？
  输入
    第一行为一个整数 n (n <= 1000)，表示三位小朋友各自写下的单词数量。
    接下来有三行，
      其中第一行为小朋友 1 写下的单词，
      其中第二行为小朋友 2 写下的单词，
      其中第三行为小朋友 3 写下的单词，
    每行恰好 n 个不同的单词，每个单词恰好长度为 3。只会出现小写字母。
  输出
    只有三个数，为小朋友 1, 2, 3 分别的得分。
  样例输入
    5
    iat roc hem ica lly
    bac ter iol ogi sts
    bac roc lly iol iat
  样例输出
    9 11 5
*/

#include <bits/stdc++.h>

using namespace std;

/*
  说明:
    1. vector & set 应用场景分析
       通常我们认为 set 相比 vector的优势主要体现在"自动排序"和"去重"上!
       在如下场景下, 使用 set 比使用 vector 更好!
         a). 如果需要频繁地修改数据结构中的元素，并需要对数据结构中的元素进行排序;
         b). 或者不保证保存到数据结构中的一定是相同的单词.

    2. 当前题目应用分析
       解答本题时, 这里定义了 set <string> 数组, 其实这里也可以使用 vector <string> 数组,
         a). 本题中不需要频繁地对 vector <string> 或 set <string> 频繁地进行修改;
         b). 题目描述中对输入参数进行了约束，保证了保存到每个 vector <string> 或
             set <string> 数据结构中的不存在重复的单词;
       所以解答本题时使用二者的效果其实是一样的!
*/
set <string> a[3];

int main() {
    int n;

    cin >> n;
    for (int i = 0; i <= 2; i++) {
        for (int j = 0; j < n; j++) {
            string b;
            cin >> b;
            a[i].insert(b);
        }
    }

    int x = 0, y = 0, z = 0;
    for (int i = 0; i <= 2; i++) {
        for(auto it = a[i].begin(); it != a[i].end(); it++) {
            string word = *it;

            if (i == 0) {
                int u = 0;
                if (a[1].count(word)) {
                    u++;
                }
                if (a[2].count(word)) {
                    u++;
                }
                if (u == 0) {
                    x = x + 3;
                } else if (u == 1) {
                    x = x + 1;
                } else {
                    x = x + 0;
                }
            } else if (i == 1) {
                int u = 0;
                if (a[0].count(word)) {
                    u++;
                }
                if (a[2].count(word)) {
                    u++;
                }
                if (u == 0) {
                    y = y + 3;
                } else if (u == 1) {
                    y = y + 1;
                } else {
                    y = y + 0;
                }
            } else if (i == 2) {
                int u = 0;
                if (a[0].count(word)) {
                    u++;
                }
                if (a[1].count(word)) {
                    u++;
                }

                if (u == 0) {
                    z = z + 3;
                } else if (u == 1) {
                    z = z + 1;
                } else {
                    z = z + 0;
                }
            }
        }
    }
    cout << x << " " << y << " " << z;

    return 0;
}